testsuite: Add tests for gtk4-builder-tool validate
authorMatthias Clasen <mclasen@redhat.com>
Sun, 1 Nov 2020 19:47:02 +0000 (14:47 -0500)
committerMatthias Clasen <mclasen@redhat.com>
Mon, 2 Nov 2020 04:09:26 +0000 (23:09 -0500)
14 files changed:
testsuite/tools/meson.build
testsuite/tools/validate-data/invalid1.expected [new file with mode: 0644]
testsuite/tools/validate-data/invalid1.ui [new file with mode: 0644]
testsuite/tools/validate-data/invalid2.expected [new file with mode: 0644]
testsuite/tools/validate-data/invalid2.ui [new file with mode: 0644]
testsuite/tools/validate-data/invalid3.expected [new file with mode: 0644]
testsuite/tools/validate-data/invalid3.ui [new file with mode: 0644]
testsuite/tools/validate-data/invalid4.expected [new file with mode: 0644]
testsuite/tools/validate-data/invalid4.ui [new file with mode: 0644]
testsuite/tools/validate-data/valid1.expected [new file with mode: 0644]
testsuite/tools/validate-data/valid1.ui [new file with mode: 0644]
testsuite/tools/validate-data/valid2.expected [new file with mode: 0644]
testsuite/tools/validate-data/valid2.ui [new file with mode: 0644]
testsuite/tools/validate.in [new file with mode: 0755]

index 1369ccfedcaea830c4ddbdfa3fd38ce253c9cd7a..54b9312e7a4f982f519e3271568c081fa680b55d 100644 (file)
@@ -5,7 +5,7 @@ bash = find_program('bash', required : false)
 if bash.found()
   test_env = environment()
 
-  foreach t : ['simplify', 'simplify-3to4', 'settings']
+  foreach t : ['simplify', 'simplify-3to4', 'validate', 'settings']
     if get_option('install-tests')
       configure_file(output: t,
                      input: '@0@.in'.format(t),
@@ -44,4 +44,5 @@ if get_option('install-tests')
 
   install_subdir('simplify-data', install_dir: testexecdir)
   install_subdir('simplify-data-3to4', install_dir: testexecdir)
+  install_subdir('validate-data', install_dir: testexecdir)
 endif
diff --git a/testsuite/tools/validate-data/invalid1.expected b/testsuite/tools/validate-data/invalid1.expected
new file mode 100644 (file)
index 0000000..77c70ce
--- /dev/null
@@ -0,0 +1 @@
+invalid1.ui:3:1 <child> is not a valid tag here
diff --git a/testsuite/tools/validate-data/invalid1.ui b/testsuite/tools/validate-data/invalid1.ui
new file mode 100644 (file)
index 0000000..0b969c3
--- /dev/null
@@ -0,0 +1,5 @@
+<interface>
+  <child>
+    <object class="GtkLabel"/>
+  </child>
+</interface>
diff --git a/testsuite/tools/validate-data/invalid2.expected b/testsuite/tools/validate-data/invalid2.expected
new file mode 100644 (file)
index 0000000..c05e26f
--- /dev/null
@@ -0,0 +1 @@
+invalid2.ui:4:1 <object> is not a valid tag here
diff --git a/testsuite/tools/validate-data/invalid2.ui b/testsuite/tools/validate-data/invalid2.ui
new file mode 100644 (file)
index 0000000..887b3bc
--- /dev/null
@@ -0,0 +1,6 @@
+<interface>
+  <object class="GtkBox">
+    <object class="GtkButton">
+    </object>
+  </object>
+</interface>
diff --git a/testsuite/tools/validate-data/invalid3.expected b/testsuite/tools/validate-data/invalid3.expected
new file mode 100644 (file)
index 0000000..824ce93
--- /dev/null
@@ -0,0 +1 @@
+invalid3.ui:3:1 <object> requires attribute 'class'
diff --git a/testsuite/tools/validate-data/invalid3.ui b/testsuite/tools/validate-data/invalid3.ui
new file mode 100644 (file)
index 0000000..9deb45b
--- /dev/null
@@ -0,0 +1,4 @@
+<interface>
+  <object>
+  </object>
+</interface>
diff --git a/testsuite/tools/validate-data/invalid4.expected b/testsuite/tools/validate-data/invalid4.expected
new file mode 100644 (file)
index 0000000..7a565ff
--- /dev/null
@@ -0,0 +1 @@
+Gtk-WARNING: Failed to find accessible property “text”: Could not parse enum: 'text'
diff --git a/testsuite/tools/validate-data/invalid4.ui b/testsuite/tools/validate-data/invalid4.ui
new file mode 100644 (file)
index 0000000..21e3248
--- /dev/null
@@ -0,0 +1,7 @@
+<interface>
+  <object class="GtkBox">
+    <accessibility>
+      <property name="text">Download</property>
+    </accessibility>
+  </object>
+</interface>
diff --git a/testsuite/tools/validate-data/valid1.expected b/testsuite/tools/validate-data/valid1.expected
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/testsuite/tools/validate-data/valid1.ui b/testsuite/tools/validate-data/valid1.ui
new file mode 100644 (file)
index 0000000..2a9a3f5
--- /dev/null
@@ -0,0 +1,3 @@
+<interface>
+  <object class="GtkLabel"/>
+</interface>
diff --git a/testsuite/tools/validate-data/valid2.expected b/testsuite/tools/validate-data/valid2.expected
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/testsuite/tools/validate-data/valid2.ui b/testsuite/tools/validate-data/valid2.ui
new file mode 100644 (file)
index 0000000..e0f4cf7
--- /dev/null
@@ -0,0 +1,4 @@
+<interface>
+  <template class="GtkEmojiChooser" parent="GtkPopover">
+  </template>
+</interface>
diff --git a/testsuite/tools/validate.in b/testsuite/tools/validate.in
new file mode 100755 (executable)
index 0000000..82de80e
--- /dev/null
@@ -0,0 +1,35 @@
+#! /bin/bash
+
+GTK_BUILDER_TOOL=${GTK_BUILDER_TOOL:-gtk4-builder-tool}
+TEST_DATA_DIR=${G_TEST_SRCDIR:-.}/validate-data
+TEST_RESULT_DIR=${TEST_RESULT_DIR:-/tmp}
+
+shopt -s nullglob
+TESTS=( "$TEST_DATA_DIR"/*.ui )
+
+echo "1..${#TESTS[*]}"
+
+I=1
+for t in ${TESTS[*]}; do
+  name=$(basename $t .ui)
+  expected="$TEST_DATA_DIR/$name.expected"
+  result="$TEST_RESULT_DIR/$name.out"
+  diff="$TEST_RESULT_DIR/$name.diff"
+  ref="$TEST_RESULT_DIR/$name.ref"
+
+  cd $TEST_DATA_DIR
+
+  $GTK_BUILDER_TOOL validate $(basename $t) 2>$result
+
+  cd $OLDPWD
+
+  if diff -u "$expected" "$result" > "$diff"; then
+    echo "ok $I $name"
+    rm "$diff"
+  else
+    echo "not ok $I $name"
+    cp "$expected" "$ref"
+  fi
+
+  I=$((I+1))
+done